package picounit.features.classloader;

import moved.org.objectweb.asm.AnnotationVisitor;
import moved.org.objectweb.asm.Attribute;
import moved.org.objectweb.asm.ClassVisitor;
import moved.org.objectweb.asm.FieldVisitor;
import moved.org.objectweb.asm.Label;
import moved.org.objectweb.asm.MethodVisitor;
import moved.org.objectweb.asm.Opcodes;

public class NullVisitor implements AnnotationVisitor, ClassVisitor, FieldVisitor, MethodVisitor, Opcodes {
	public static final NullVisitor INSTANCE = new NullVisitor();

	///////////////////////////////////////////////////////////////////////////////////////////////
	// AnnotationVisitor, ClassVisitor, FieldVisitor, MethodVisitor
	///////////////////////////////////////////////////////////////////////////////////////////////

	public AnnotationVisitor visitAnnotation(String name, String desc) {
		return this;
	}

	public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
		return this;
	}

	public void visitEnd() {
	}

	///////////////////////////////////////////////////////////////////////////////////////////////
	// ClassVisitor, FieldVisitor, MethodVisitor
	///////////////////////////////////////////////////////////////////////////////////////////////

	public void visitAttribute(Attribute attr) {
	}

	///////////////////////////////////////////////////////////////////////////////////////////////
	// AnnotationVisitor
	///////////////////////////////////////////////////////////////////////////////////////////////

	public void visit(String name, Object value) {
	}

	public AnnotationVisitor visitArray(String name) {
		return this;
	}

	public void visitEnum(String name, String desc, String value) {
	}

	///////////////////////////////////////////////////////////////////////////////////////////////
	// ClassVisitor
	///////////////////////////////////////////////////////////////////////////////////////////////

	public void visit(int version, int access, String name, String signature, String superName,
		String[] interfaces) {
	}

	public FieldVisitor visitField(int access, String name, String desc, String signature,
		Object value) {

		return this;
	}

	public void visitInnerClass(String name, String outerName, String innerName, int access) {
	}

	public MethodVisitor visitMethod(int access, String name, String desc, String signature,
		String[] exceptions) {

		return this;
	}

	public void visitOuterClass(String owner, String name, String desc) {
	}

	public void visitSource(String source, String debug) {
	}

	///////////////////////////////////////////////////////////////////////////////////////////////
	// MethodVisitor
	///////////////////////////////////////////////////////////////////////////////////////////////

	public AnnotationVisitor visitAnnotationDefault() {
		return this;
	}

	public void visitCode() {
	}

	public void visitFieldInsn(int opcode, String owner, String name, String desc) {
	}

	public void visitIincInsn(int var, int increment) {
	}

	public void visitInsn(int opcode) {
	}

	public void visitIntInsn(int opcode, int operand) {
	}

	public void visitJumpInsn(int opcode, Label label) {
	}

	public void visitLabel(Label label) {
	}

	public void visitLdcInsn(Object cst) {
	}

	public void visitLineNumber(int line, Label start) {
	}

	public void visitLocalVariable(String name, String desc, String signature, Label start,
		Label end, int index) {
	}

	public void visitLookupSwitchInsn(Label dflt, int keys[], Label labels[]) {
	}

	public void visitMaxs(int maxStack, int maxLocals) {
	}

	public void visitMethodInsn(int opcode, String owner, String name, String desc) {
	}

	public void visitMultiANewArrayInsn(String desc, int dims) {
	}

	public AnnotationVisitor visitParameterAnnotation(int parameter, String desc, boolean visible) {
		return this;
	}

	public void visitTableSwitchInsn(int min, int max, Label dflt, Label labels[]) {
	}

	public void visitTryCatchBlock(Label start, Label end, Label handler, String type) {
	}

	public void visitTypeInsn(int opcode, String desc) {
	}

	public void visitVarInsn(int opcode, int var) {
	}
}
